<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Classes  Reference</title>
    <link rel="stylesheet" type="text/css" href="css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="css/highlight.css" />
    <meta charset="utf-8">
    <script src="js/jquery.min.js" defer></script>
    <script src="js/jazzy.js" defer></script>
    
    <script src="js/lunr.min.js" defer></script>
    <script src="js/typeahead.jquery.js" defer></script>
    <script src="js/jazzy.search.js" defer></script>
  </head>
  <body>

    <a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a>

    <a title="Classes  Reference"></a>

    <header class="header">
      <p class="header-col header-col--primary">
        <a class="header-link" href="index.html">
          XCoordinator Docs
        </a>
        
      </p>
    
      <p class="header-col--secondary">
        <form role="search" action="search.json">
          <input type="text" placeholder="Search documentation" data-typeahead>
        </form>
      </p>
    
        <p class="header-col header-col--secondary">
          <a class="header-link" href="https://github.com/quickbirdstudios/XCoordinator">
            <img class="header-icon" src="img/gh.png"/>
            View on GitHub
          </a>
        </p>
    
    </header>

    <p class="breadcrumbs">
      <a class="breadcrumb" href="index.html">XCoordinator Reference</a>
      <img class="carat" src="img/carat.png" />
      Classes  Reference
    </p>

    <div class="content-wrapper">
      <nav class="navigation">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/Animation.html">Animation</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/AnyCoordinator.html">AnyCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/AnyTransitionPerformer.html">AnyTransitionPerformer</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/BaseCoordinator.html">BaseCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/BasicCoordinator.html">BasicCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/BasicCoordinator/InitialLoadingType.html">– InitialLoadingType</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/InteractiveTransitionAnimation.html">InteractiveTransitionAnimation</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/InterruptibleTransitionAnimation.html">InterruptibleTransitionAnimation</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/NavigationAnimationDelegate.html">NavigationAnimationDelegate</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/NavigationCoordinator.html">NavigationCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/PageCoordinator.html">PageCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/PageCoordinatorDataSource.html">PageCoordinatorDataSource</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/RedirectionRouter.html">RedirectionRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/SplitCoordinator.html">SplitCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/StaticTransitionAnimation.html">StaticTransitionAnimation</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/StrongRouter.html">StrongRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/TabBarAnimationDelegate.html">TabBarAnimationDelegate</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/TabBarCoordinator.html">TabBarCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/ViewCoordinator.html">ViewCoordinator</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Extensions.html">Extensions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UIView.html">UIView</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UIViewController.html">UIViewController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Protocols.html">Protocols</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Container.html">Container</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Coordinator.html">Coordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/PercentDrivenInteractionController.html">PercentDrivenInteractionController</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Presentable.html">Presentable</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols.html#/s:12XCoordinator5RouteP">Route</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Router.html">Router</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/TransitionAnimation.html">TransitionAnimation</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/TransitionContext.html">TransitionContext</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/TransitionPerformer.html">TransitionPerformer</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/TransitionProtocol.html">TransitionProtocol</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Structs.html">Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/Transition.html">Transition</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/TransitionOptions.html">TransitionOptions</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/UnownedErased.html">UnownedErased</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/UnownedErased.html">UnownedErased</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/WeakErased.html">WeakErased</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/WeakErased.html">WeakErased</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Typealiases.html">Type Aliases</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator24AnyNavigationCoordinatora">AnyNavigationCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator9AnyRoutera">AnyRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator20AnyTabBarCoordinatora">AnyTabBarCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator18AnyViewCoordinatora">AnyViewCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator26BasicNavigationCoordinatora">BasicNavigationCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator22BasicTabBarCoordinatora">BasicTabBarCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator20BasicViewCoordinatora">BasicViewCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator26ContextPresentationHandlera">ContextPresentationHandler</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator20NavigationTransitiona">NavigationTransition</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator14PageTransitiona">PageTransition</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator19PresentationHandlera">PresentationHandler</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator15SplitTransitiona">SplitTransition</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator16TabBarTransitiona">TabBarTransition</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator13UnownedRoutera">UnownedRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator14ViewTransitiona">ViewTransition</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Typealiases.html#/s:12XCoordinator10WeakRoutera">WeakRouter</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">

        <section class="section">
          <div class="section-content">
            <h1>Classes</h1>
            <p>The following classes are available globally.</p>

          </div>
        </section>

        <section class="section">
          <div class="section-content">
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@XCoordinator@objc(cs)Animation"></a>
                    <a name="//apple_ref/swift/Class/Animation" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@XCoordinator@objc(cs)Animation">Animation</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p><code>Animation</code> is used to set presentation and dismissal animations for presentables.</p>

<p>Depending on the transition in use, different properties of a <code>UIViewController</code> are set to make sure the transition animation is used.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    <p>To not override the previously set <code>Animation</code>, use <code>nil</code> when initializing a transition.</p>

<p>Make sure to hold a strong reference to the <code>Animation</code> object, as it is only held by a weak reference.</p>

</div>

                        <a href="Classes/Animation.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">Animation</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator14AnyCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/AnyCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator14AnyCoordinatorC">AnyCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p><code>AnyCoordinator</code> is a type-erased <code><a href="Protocols/Coordinator.html">Coordinator</a></code> (<code>RouteType</code> &amp; <code>TransitionType</code>) and
can be used as an abstraction from a specific coordinator class while still specifying
TransitionType and RouteType.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    If you do not want/need to specify TransitionType, you might want to look into the
different router abstractions <code><a href="Classes/StrongRouter.html">StrongRouter</a></code>, <code><a href="Typealiases.html#/s:12XCoordinator13UnownedRoutera">UnownedRouter</a></code> and <code><a href="Typealiases.html#/s:12XCoordinator10WeakRoutera">WeakRouter</a></code>.
See <code><a href="Classes/AnyTransitionPerformer.html">AnyTransitionPerformer</a></code> to further abstract from RouteType.

</div>

                        <a href="Classes/AnyCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">AnyCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt">TransitionType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Protocols/Coordinator.html">Coordinator</a></span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span><span class="p">,</span> <span class="kt">TransitionType</span> <span class="p">:</span> <span class="kt"><a href="Protocols/TransitionProtocol.html">TransitionProtocol</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator22AnyTransitionPerformerC"></a>
                    <a name="//apple_ref/swift/Class/AnyTransitionPerformer" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator22AnyTransitionPerformerC">AnyTransitionPerformer</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>AnyTransitionPerformer can be used as an abstraction from a specific TransitionPerformer implementation
without losing type information about its TransitionType.</p>

<p>This type abstraction can be especially helpful when performing transitions.
AnyTransitionPerformer abstracts away any implementation specific details and reduces coordinators to the capabilities
of the <code><a href="Protocols/TransitionPerformer.html">TransitionPerformer</a></code> protocol.</p>

                        <a href="Classes/AnyTransitionPerformer.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">AnyTransitionPerformer</span><span class="o">&lt;</span><span class="kt">TransitionType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Protocols/TransitionPerformer.html">TransitionPerformer</a></span> <span class="k">where</span> <span class="kt">TransitionType</span> <span class="p">:</span> <span class="kt"><a href="Protocols/TransitionProtocol.html">TransitionProtocol</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator15BaseCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/BaseCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator15BaseCoordinatorC">BaseCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>BaseCoordinator can (and is encouraged to) be used as a superclass for any custom implementation of a coordinator.</p>

<p>It is also encouraged to use already provided subclasses of BaseCoordinator such as
<code><a href="Classes/NavigationCoordinator.html">NavigationCoordinator</a></code>, <code><a href="Classes/TabBarCoordinator.html">TabBarCoordinator</a></code>, <code><a href="Classes/ViewCoordinator.html">ViewCoordinator</a></code>, <code><a href="Classes/SplitCoordinator.html">SplitCoordinator</a></code>
and <code><a href="Classes/PageCoordinator.html">PageCoordinator</a></code>.</p>

                        <a href="Classes/BaseCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">BaseCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt">TransitionType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Protocols/Coordinator.html">Coordinator</a></span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span><span class="p">,</span> <span class="kt">TransitionType</span> <span class="p">:</span> <span class="kt"><a href="Protocols/TransitionProtocol.html">TransitionProtocol</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator16BasicCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/BasicCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator16BasicCoordinatorC">BasicCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>BasicCoordinator is a coordinator class that can be used without subclassing.</p>

<p>Although subclassing of coordinators is encouraged for more complex cases, a <code>BasicCoordinator</code> can easily
be created by only providing a <code>prepareTransition</code> closure, an <code>initialRoute</code> and an <code>initialLoadingType</code>.</p>

                        <a href="Classes/BasicCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">BasicCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt">TransitionType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Classes/BaseCoordinator.html">BaseCoordinator</a></span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt">TransitionType</span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span><span class="p">,</span> <span class="kt">TransitionType</span> <span class="p">:</span> <span class="kt"><a href="Protocols/TransitionProtocol.html">TransitionProtocol</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@XCoordinator@objc(cs)InteractiveTransitionAnimation"></a>
                    <a name="//apple_ref/swift/Class/InteractiveTransitionAnimation" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@XCoordinator@objc(cs)InteractiveTransitionAnimation">InteractiveTransitionAnimation</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p><code>InteractiveTransitionAnimation</code> provides a simple interface to create interactive transition animations.</p>

<p>An <code>InteractiveTransitionAnimation</code> can be created by providing the duration, the animation code
and (optionally) a closure to create an interaction controller.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    To get further information read the UIKit documentation of
<a href="https://developer.apple.com/documentation/uikit/UIViewControllerAnimatedTransitioning">UIViewControllerAnimatedTransitioning</a>,
<a href="https://developer.apple.com/documentation/uikit/UIViewControllerInteractiveTransitioning">UIViewControllerInteractiveTransitioning</a>,
<a href="https://developer.apple.com/documentation/uikit/UIViewControllerContextTransitioning">UIViewControllerContextTransitioning</a> and
<a href="https://developer.apple.com/documentation/uikit/UIPercentDrivenInteractiveTransition">UIPercentDrivenInteractiveTransition</a>.

</div>

                        <a href="Classes/InteractiveTransitionAnimation.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">InteractiveTransitionAnimation</span> <span class="p">:</span> <span class="kt">NSObject</span><span class="p">,</span> <span class="kt"><a href="Protocols/TransitionAnimation.html">TransitionAnimation</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@XCoordinator@objc(cs)InterruptibleTransitionAnimation"></a>
                    <a name="//apple_ref/swift/Class/InterruptibleTransitionAnimation" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@XCoordinator@objc(cs)InterruptibleTransitionAnimation">InterruptibleTransitionAnimation</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Use InterruptibleTransitionAnimation to define interactive transitions based on the
<a href="https://developer.apple.com/documentation/uikit/UIViewPropertyAnimator">UIViewPropertyAnimator</a>
APIs introduced in iOS 10.</p>

                        <a href="Classes/InterruptibleTransitionAnimation.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">@available(iOS 10.0, *)</span>
<span class="kd">open</span> <span class="kd">class</span> <span class="kt">InterruptibleTransitionAnimation</span> <span class="p">:</span> <span class="kt"><a href="Classes/InteractiveTransitionAnimation.html">InteractiveTransitionAnimation</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@XCoordinator@objc(cs)NavigationAnimationDelegate"></a>
                    <a name="//apple_ref/swift/Class/NavigationAnimationDelegate" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@XCoordinator@objc(cs)NavigationAnimationDelegate">NavigationAnimationDelegate</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>NavigationAnimationDelegate is used as the delegate of a NavigationCoordinator&rsquo;s rootViewController
to allow for push-transitions to specify animations.</p>

<p>NavigationAnimationDelegate conforms to the <code>UINavigationControllerDelegate</code> protocol
and is intended for use as the delegate of one navigation controller only.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    Do not override the delegate of a NavigationCoordinator&rsquo;s rootViewController.
Instead use the delegate property of the NavigationCoordinator itself.

</div>

                        <a href="Classes/NavigationAnimationDelegate.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">NavigationAnimationDelegate</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator21NavigationCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/NavigationCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator21NavigationCoordinatorC">NavigationCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>NavigationCoordinator acts as a base class for custom coordinators with a <code>UINavigationController</code>
as rootViewController.</p>

<p>NavigationCoordinator especially ensures that transition animations are called,
which would not be the case when creating a <code>BaseCoordinator&lt;RouteType, NavigationTransition&gt;</code>.</p>

                        <a href="Classes/NavigationCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">NavigationCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Classes/BaseCoordinator.html">BaseCoordinator</a></span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt"><a href="Typealiases.html#/s:12XCoordinator20NavigationTransitiona">NavigationTransition</a></span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator15PageCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/PageCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator15PageCoordinatorC">PageCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>PageCoordinator provides a base class for your custom coordinator with a <code>UIPageViewController</code> rootViewController.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    PageCoordinator sets the dataSource of the rootViewController to reflect the parameters in the initializer.

</div>

                        <a href="Classes/PageCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">PageCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Classes/BaseCoordinator.html">BaseCoordinator</a></span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt"><a href="Typealiases.html#/s:12XCoordinator14PageTransitiona">PageTransition</a></span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@XCoordinator@objc(cs)PageCoordinatorDataSource"></a>
                    <a name="//apple_ref/swift/Class/PageCoordinatorDataSource" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@XCoordinator@objc(cs)PageCoordinatorDataSource">PageCoordinatorDataSource</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>PageCoordinatorDataSource is a
<a href="https://developer.apple.com/documentation/uikit/UIPageViewControllerDataSource">UIPageViewControllerDataSource</a>
implementation with a rather static list of pages.</p>

<p>It further allows looping through the given pages. When looping is active the pages are wrapped around in the given presentables array.
When the user navigates beyond the end of the specified pages, the pages are wrapped around by displaying the first page.
In analogy to that, it also wraps to the last page when navigating beyond the beginning.</p>

                        <a href="Classes/PageCoordinatorDataSource.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">PageCoordinatorDataSource</span> <span class="p">:</span> <span class="kt">NSObject</span><span class="p">,</span> <span class="kt">UIPageViewControllerDataSource</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator17RedirectionRouterC"></a>
                    <a name="//apple_ref/swift/Class/RedirectionRouter" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator17RedirectionRouterC">RedirectionRouter</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>RedirectionRouters can be used to extract routes into different route types.
Instead of having one huge route and one or more huge coordinators, you can create separate redirecting routers.</p>

<p>Create a RedirectionRouter from a parent router by providing a reference to that parent.
Triggered routes of the RedirectionRouter will be redirected to this parent router according to the provided mapping.
Please provide either a <code>map</code> closure in the initializer or override the <code>mapToParentRoute</code> method.</p>

<p>A RedirectionRouter has a viewController which is used in transitions,
e.g. when you are presenting, pushing, or otherwise displaying it.</p>

                        <a href="Classes/RedirectionRouter.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">RedirectionRouter</span><span class="o">&lt;</span><span class="kt">ParentRoute</span><span class="p">,</span> <span class="kt">RouteType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Protocols/Router.html">Router</a></span> <span class="k">where</span> <span class="kt">ParentRoute</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span><span class="p">,</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator16SplitCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/SplitCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator16SplitCoordinatorC">SplitCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>SplitCoordinator can be used as a basis for a coordinator with a rootViewController of type
<code>UISplitViewController</code>.</p>

<p>You can use all <code>SplitTransitions</code> and get an initializer to set a master and
(optional) detail presentable.</p>

                        <a href="Classes/SplitCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">SplitCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Classes/BaseCoordinator.html">BaseCoordinator</a></span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt"><a href="Typealiases.html#/s:12XCoordinator15SplitTransitiona">SplitTransition</a></span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@XCoordinator@objc(cs)StaticTransitionAnimation"></a>
                    <a name="//apple_ref/swift/Class/StaticTransitionAnimation" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@XCoordinator@objc(cs)StaticTransitionAnimation">StaticTransitionAnimation</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p><code>StaticTransitionAnimation</code> can be used to realize static transition animations.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    Consider using <code><a href="Classes/InteractiveTransitionAnimation.html">InteractiveTransitionAnimation</a></code> instead, if possible, as it is as simple
to use. However, this class is helpful to make sure your transition animation is not mistaken to be
interactive, if your animation code does not fulfill the requirements of an interactive transition
animation.

</div>

                        <a href="Classes/StaticTransitionAnimation.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">StaticTransitionAnimation</span> <span class="p">:</span> <span class="kt">NSObject</span><span class="p">,</span> <span class="kt"><a href="Protocols/TransitionAnimation.html">TransitionAnimation</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator12StrongRouterC"></a>
                    <a name="//apple_ref/swift/Class/StrongRouter" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator12StrongRouterC">StrongRouter</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>StrongRouter is a type-erasure of a given Router object and, therefore, can be used as an abstraction from a specific Router
implementation without losing type information about its RouteType.</p>

<p>StrongRouter abstracts away any implementation specific details and
essentially reduces them to properties specified in the <code><a href="Protocols/Router.html">Router</a></code> protocol.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    Do not hold a reference to any router from the view hierarchy.
Use <code><a href="Typealiases.html#/s:12XCoordinator13UnownedRoutera">UnownedRouter</a></code> or <code><a href="Typealiases.html#/s:12XCoordinator10WeakRoutera">WeakRouter</a></code> in your view controllers or view models instead.
You can create them using the <code><a href="Protocols/Coordinator.html#/s:12XCoordinator11CoordinatorPAARlzCrlE13unownedRouterAA13UnownedErasedVyAA06StrongD0Cy9RouteTypeQzGGvp">Coordinator.unownedRouter</a></code> and <code><a href="Protocols/Coordinator.html#/s:12XCoordinator11CoordinatorPAARlzCrlE10weakRouterAA10WeakErasedVyAA06StrongD0Cy9RouteTypeQzGGvp">Coordinator.weakRouter</a></code> properties.

</div>

                        <a href="Classes/StrongRouter.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">StrongRouter</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Protocols/Router.html">Router</a></span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@XCoordinator@objc(cs)TabBarAnimationDelegate"></a>
                    <a name="//apple_ref/swift/Class/TabBarAnimationDelegate" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@XCoordinator@objc(cs)TabBarAnimationDelegate">TabBarAnimationDelegate</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>TabBarAnimationDelegate is used as the delegate of a TabBarCoordinator&rsquo;s rootViewController
to allow for transitions to specify transition animations.</p>

<p>TabBarAnimationDelegate conforms to the <code>UITabBarControllerDelegate</code> protocol
and is intended for use as the delegate of one tabbar controller only.</p>
<div class="aside aside-note">
    <p class="aside-title">Note</p>
    Do not override the delegate of a TabBarCoordinator&rsquo;s rootViewController-delegate.
Instead use the delegate property of the TabBarCoordinator itself.

</div>

                        <a href="Classes/TabBarAnimationDelegate.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">TabBarAnimationDelegate</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator17TabBarCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/TabBarCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator17TabBarCoordinatorC">TabBarCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Use a TabBarCoordinator to coordinate a flow where a <code>UITabbarController</code> serves as a rootViewController.
With a TabBarCoordinator, you get access to all tabbarController-related transitions.</p>

                        <a href="Classes/TabBarCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">TabBarCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Classes/BaseCoordinator.html">BaseCoordinator</a></span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt"><a href="Typealiases.html#/s:12XCoordinator16TabBarTransitiona">TabBarTransition</a></span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12XCoordinator15ViewCoordinatorC"></a>
                    <a name="//apple_ref/swift/Class/ViewCoordinator" class="dashAnchor"></a>
                    <a class="token" href="#/s:12XCoordinator15ViewCoordinatorC">ViewCoordinator</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>ViewCoordinator is a base class for custom coordinators with a <code>UIViewController</code> rootViewController.</p>

                        <a href="Classes/ViewCoordinator.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">open</span> <span class="kd">class</span> <span class="kt">ViewCoordinator</span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="o">&gt;</span> <span class="p">:</span> <span class="kt"><a href="Classes/BaseCoordinator.html">BaseCoordinator</a></span><span class="o">&lt;</span><span class="kt">RouteType</span><span class="p">,</span> <span class="kt"><a href="Typealiases.html#/s:12XCoordinator14ViewTransitiona">ViewTransition</a></span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">RouteType</span> <span class="p">:</span> <span class="kt"><a href="Protocols.html#/s:12XCoordinator5RouteP">Route</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
          </div>
        </section>

      </article>
    </div>
    <section class="footer">
      <p>&copy; 2019 <a class="link" href="https://quickbirdstudios.com" target="_blank" rel="external">Stefan Kofler &amp; Paul Kraft</a>. All rights reserved. (Last updated: 2019-09-18)</p>
      <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
    </section>
  </body>
</div>
</html>
